// This example shows how to read the attributes of 4 OPC-UA nodes specified by browse paths at once, and display the // results. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . // OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-CSharp . // Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own // a commercial license in order to use Online Forums, and we reply to every post. using System; using OpcLabs.EasyOpc.UA; using OpcLabs.EasyOpc.UA.Navigation.Parsing; using OpcLabs.EasyOpc.UA.OperationModel; namespace UADocExamples._EasyUAClient { partial class ReadMultiple { public static void BrowsePath() { UAEndpointDescriptor endpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; // or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) // or "https://opcua.demo-this.com:51212/UA/SampleServer/" // Instantiate the client object. var client = new EasyUAClient(); // Instantiate the browse path parser. var browsePathParser = new UABrowsePathParser {DefaultNamespaceUriString = "http://test.org/UA/Data/"}; // Prepare arguments. // Note: Add error handling around the following statement if the browse paths are not guaranteed to be // syntactically valid. var readArgumentsArray = new[] { new UAReadArguments(endpointDescriptor, browsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/FloatValue")), new UAReadArguments(endpointDescriptor, browsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/SByteValue")), new UAReadArguments(endpointDescriptor, browsePathParser.Parse("[ObjectsFolder]/Data/Static/Array/UInt16Value")), new UAReadArguments(endpointDescriptor, browsePathParser.Parse("[ObjectsFolder]/Data/Static/UserScalar/Int32Value")) }; // Obtain attribute data. UAAttributeDataResult[] attributeDataResultArray = client.ReadMultiple(readArgumentsArray); // Display results. for (int i = 0; i < attributeDataResultArray.Length; i++) { UAAttributeDataResult attributeDataResult = attributeDataResultArray[i]; if (attributeDataResult.Succeeded) Console.WriteLine($"results[{i}].AttributeData: {attributeDataResult.AttributeData}"); else Console.WriteLine($"results[{i}] *** Failure: {attributeDataResult.ErrorMessageBrief}"); } } // Example output: //results[0].AttributeData: 4.187603E+21 {Single} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good //results[1].AttributeData: -98 {Int16} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good //results[2].AttributeData: [58] {38240, 11129, 64397, 22845, 30525, ...} {Int32[]} @2019-11-09T14:00:07.543 @@2019-11-09T14:05:46.268; Good //results[3].AttributeData: 1280120396 {Int32} @2019-11-09T14:00:07.590 @@2019-11-09T14:05:46.268; Good } }
# This example shows how to read the attributes of 4 OPC-UA nodes specified by browse paths at once, and display the # results. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in PowerShell on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-PowerShell . # Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own # a commercial license in order to use Online Forums, and we reply to every post. #requires -Version 5.1 using namespace OpcLabs.EasyOpc.UA using namespace OpcLabs.EasyOpc.UA.Navigation.Parsing using namespace OpcLabs.EasyOpc.UA.OperationModel # The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows . Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcUA.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcUAComponents.dll" [UAEndpointDescriptor]$endpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" # or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) # or "https://opcua.demo-this.com:51212/UA/SampleServer/" # Instantiate the client object. $client = New-Object EasyUAClient # Instantiate the browse path parser. $browsePathParser = New-Object UABrowsePathParser -Property @{DefaultNamespaceUriString = "http://test.org/UA/Data/"} # Prepare arguments. # Note: Add error handling around the following statement if the browse paths are not guaranteed to be ## syntactically valid. $readArgumentsArray = @( (New-Object UAReadArguments($endpointDescriptor, $browsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/FloatValue"))), (New-Object UAReadArguments($endpointDescriptor, $browsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/SByteValue"))), (New-Object UAReadArguments($endpointDescriptor, $browsePathParser.Parse("[ObjectsFolder]/Data/Static/Array/UInt16Value"))), (New-Object UAReadArguments($endpointDescriptor, $browsePathParser.Parse("[ObjectsFolder]/Data/Static/UserScalar/Int32Value"))) ) # Obtain attribute data. $attributeDataResultArray = $client.ReadMultiple($readArgumentsArray) for ($i = 0; $i -lt $attributeDataResultArray.Length; $i++) { $attributeDataResult = $attributeDataResultArray[$i] if ($attributeDataResult.Succeeded) { Write-Host "results[$($i)].AttributeData: $($attributeDataResult.AttributeData)" } else { Write-Host "results[$($i)]: *** Failure: $($attributeDataResult.ErrorMessageBrief)" } } # Example output: # #results[0].AttributeData: 4.187603E+21 {Single} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good #results[1].AttributeData: -98 {Int16} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good #results[2].AttributeData: [58] {38240, 11129, 64397, 22845, 30525, ...} {Int32[]} @2019-11-09T14:00:07.543 @@2019-11-09T14:05:46.268; Good #results[3].AttributeData: 1280120396 {Int32} @2019-11-09T14:00:07.590 @@2019-11-09T14:05:46.268; Good
' This example shows how to read the attributes of 4 OPC-UA nodes specified by browse paths at once, and display the ' results. ' ' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . ' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET . ' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own ' a commercial license in order to use Online Forums, and we reply to every post. Imports OpcLabs.EasyOpc.UA Imports OpcLabs.EasyOpc.UA.Navigation.Parsing Imports OpcLabs.EasyOpc.UA.OperationModel Namespace _EasyUAClient Partial Friend Class ReadMultiple Public Shared Sub BrowsePath() ' Define which server we will work with. Dim endpointDescriptor As UAEndpointDescriptor = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' or "http://opcua.demo-this.com:51211/UA/SampleServer" (currently not supported) ' or "https://opcua.demo-this.com:51212/UA/SampleServer/" ' Instantiate the client object Dim client = New EasyUAClient() Dim browsePathParser = New UABrowsePathParser() browsePathParser.DefaultNamespaceUriString = "http://test.org/UA/Data/" ' Prepare arguments ' Note: Add error handling around the following statement if the browse paths are Not guaranteed to be ' syntactically valid. Dim readArgumentsArray = New UAReadArguments() _ { New UAReadArguments(endpointDescriptor, browsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/FloatValue")), New UAReadArguments(endpointDescriptor, browsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/SByteValue")), New UAReadArguments(endpointDescriptor, browsePathParser.Parse("[ObjectsFolder]/Data/Static/Array/UInt16Value")), New UAReadArguments(endpointDescriptor, browsePathParser.Parse("[ObjectsFolder]/Data/Static/UserScalar/Int32Value")) } ' Obtain attribute data. By default, the Value attributes of the nodes will be read. Dim resultArray() As UAAttributeDataResult = client.ReadMultiple(readArgumentsArray) ' Display results For i As Integer = 0 To resultArray.Length - 1 Dim attributeDataResult As UAAttributeDataResult = resultArray(i) If attributeDataResult.Succeeded Then Console.WriteLine("results[{0}].AttributeData: {1}", i, attributeDataResult.AttributeData) Else Console.WriteLine("results[{0}]: *** Failure: {1}", i, attributeDataResult.ErrorMessageBrief) End If Next i ' Example output: 'results[0].AttributeData 4.187603E+21 {System.Single} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good 'results[1].AttributeData: -98 {System.Int16} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good 'results[2].AttributeData: [58] {38240, 11129, 64397, 22845, 30525, ...} {System.Int32[]} @2019-11-09T14:00:07.543 @@2019-11-09T14:05:46.268; Good 'results[3].AttributeData: 1280120396 {System.Int32} @2019-11-09T14:00:07.590 @@2019-11-09T14:05:46.268; Good End Sub End Class End Namespace
// This example shows how to read the attributes of 4 OPC-UA nodes specified // by browse paths at once, and display the results. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . // OPC client and subscriber examples in Object Pascal (Delphi) on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-OP . // Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own // a commercial license in order to use Online Forums, and we reply to every post. class procedure ReadMultiple.BrowsePath; var Arguments: OleVariant; BrowsePathParser: _UABrowsePathParser; Client: OpcLabs_EasyOpcUA_TLB._EasyUAClient; I: Cardinal; ReadArguments1, ReadArguments2, ReadArguments3, ReadArguments4: _UAReadArguments; Result: _UAAttributeDataResult; Results: OleVariant; begin BrowsePathParser := CoUABrowsePathParser.Create; BrowsePathParser.DefaultNamespaceUriString := 'http://test.org/UA/Data/'; ReadArguments1 := CoUAReadArguments.Create; ReadArguments1.EndpointDescriptor.UrlString := //'http://opcua.demo-this.com:51211/UA/SampleServer'; //'https://opcua.demo-this.com:51212/UA/SampleServer/'; 'opc.tcp://opcua.demo-this.com:51210/UA/SampleServer'; // Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. ReadArguments1.NodeDescriptor.BrowsePath := BrowsePathParser.Parse('[ObjectsFolder]/Data/Dynamic/Scalar/FloatValue'); ReadArguments2 := CoUAReadArguments.Create; ReadArguments2.EndpointDescriptor.UrlString := //'http://opcua.demo-this.com:51211/UA/SampleServer'; //'https://opcua.demo-this.com:51212/UA/SampleServer/'; 'opc.tcp://opcua.demo-this.com:51210/UA/SampleServer'; // Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. ReadArguments2.NodeDescriptor.BrowsePath := BrowsePathParser.Parse('[ObjectsFolder]/Data/Dynamic/Scalar/SByteValue'); ReadArguments3 := CoUAReadArguments.Create; ReadArguments3.EndpointDescriptor.UrlString := //'http://opcua.demo-this.com:51211/UA/SampleServer'; //'https://opcua.demo-this.com:51212/UA/SampleServer/'; 'opc.tcp://opcua.demo-this.com:51210/UA/SampleServer'; // Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. ReadArguments3.NodeDescriptor.BrowsePath := BrowsePathParser.Parse('[ObjectsFolder]/Data/Static/Array/UInt16Value'); ReadArguments4 := CoUAReadArguments.Create; ReadArguments4.EndpointDescriptor.UrlString := //'http://opcua.demo-this.com:51211/UA/SampleServer'; //'https://opcua.demo-this.com:51212/UA/SampleServer/'; 'opc.tcp://opcua.demo-this.com:51210/UA/SampleServer'; // Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. ReadArguments4.NodeDescriptor.BrowsePath := BrowsePathParser.Parse('[ObjectsFolder]/Data/Static/UserScalar/Int32Value'); Arguments := VarArrayCreate([0, 3], varVariant); Arguments[0] := ReadArguments1; Arguments[1] := ReadArguments2; Arguments[2] := ReadArguments3; Arguments[3] := ReadArguments4; // Instantiate the client object Client := CoEasyUAClient.Create; // Perform the operation TVarData(Results).VType := varArray or varVariant; TVarData(Results).VArray := PVarArray(Client.ReadMultiple(Arguments)); // Display results for I := VarArrayLowBound(Results, 1) to VarArrayHighBound(Results, 1) do begin Result := IInterface(Results[I]) as _UAAttributeDataResult; if Result.Succeeded then WriteLn('results[', I, '].AttributeData: ', Result.AttributeData.ToString) else WriteLn('results[', I, '] *** Failure: ', Result.ErrorMessageBrief); end; VarClear(Results); VarClear(Arguments); // Example output: //results[0].AttributeData: 4.187603E+21 {System.Single} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good //results[1].AttributeData: -98 {System.Int16} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good //results[2].AttributeData: [58] {38240, 11129, 64397, 22845, 30525, ...} {System.Int32[]} @2019-11-09T14:00:07.543 @@2019-11-09T14:05:46.268; Good //results[3].AttributeData: 1280120396 {System.Int32} @2019-11-09T14:00:07.590 @@2019-11-09T14:05:46.268; Good end;
// This example shows how to read the attributes of 4 OPC-UA nodes specified by browse paths at once, and display the results. // // Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . // OPC client and subscriber examples in PHP on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-PHP . // Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own // a commercial license in order to use Online Forums, and we reply to every post. $BrowsePathParser = new COM("OpcLabs.EasyOpc.UA.Navigation.Parsing.UABrowsePathParser"); $BrowsePathParser->DefaultNamespaceUriString = "http://test.org/UA/Data/"; $ReadArguments1 = new COM("OpcLabs.EasyOpc.UA.OperationModel.UAReadArguments"); $ReadArguments1->EndpointDescriptor->UrlString = //"http://opcua.demo-this.com:51211/UA/SampleServer"; //"https://opcua.demo-this.com:51212/UA/SampleServer/"; "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; $ReadArguments1->NodeDescriptor->BrowsePath = $BrowsePathParser->Parse("[ObjectsFolder]/Data/Dynamic/Scalar/FloatValue"); $ReadArguments2 = new COM("OpcLabs.EasyOpc.UA.OperationModel.UAReadArguments"); $ReadArguments2->EndpointDescriptor->UrlString = //"http://opcua.demo-this.com:51211/UA/SampleServer"; //"https://opcua.demo-this.com:51212/UA/SampleServer/"; "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; $ReadArguments2->NodeDescriptor->BrowsePath = $BrowsePathParser->Parse("[ObjectsFolder]/Data/Dynamic/Scalar/SByteValue"); $ReadArguments3 = new COM("OpcLabs.EasyOpc.UA.OperationModel.UAReadArguments"); $ReadArguments3->EndpointDescriptor->UrlString = //"http://opcua.demo-this.com:51211/UA/SampleServer"; //"https://opcua.demo-this.com:51212/UA/SampleServer/"; "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; $ReadArguments3->NodeDescriptor->BrowsePath = $BrowsePathParser->Parse("[ObjectsFolder]/Data/Static/Array/UInt16Value"); $ReadArguments4 = new COM("OpcLabs.EasyOpc.UA.OperationModel.UAReadArguments"); $ReadArguments4->EndpointDescriptor->UrlString = //"http://opcua.demo-this.com:51211/UA/SampleServer"; //"https://opcua.demo-this.com:51212/UA/SampleServer/"; "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer"; $ReadArguments4->NodeDescriptor->BrowsePath = $BrowsePathParser->Parse("[ObjectsFolder]/Data/Static/UserScalar/Int32Value"); $arguments[0] = $ReadArguments1; $arguments[1] = $ReadArguments2; $arguments[2] = $ReadArguments3; $arguments[3] = $ReadArguments4; // Instantiate the client object $Client = new COM("OpcLabs.EasyOpc.UA.EasyUAClient"); // Perform the operation $results = $Client->ReadMultiple($arguments); // Display results for ($i = 0; $i < count($results); $i++) { $attributeDataResult = $results[$i]; if ($attributeDataResult->Succeeded) printf("results[d].AttributeDatas\n", $i, $attributeDataResult->AttributeData); else printf("results[d]: *** Failures\n", $i, $attributeDataResult->ErrorMessageBrief); }
REM This example shows how to read the attributes of 4 OPC-UA nodes specified REM by browse paths at once, and display the results. REM REM Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . REM OPC client and subscriber examples in Visual Basic on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VB . REM Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own REM a commercial license in order to use Online Forums, and we reply to every post. Public Sub ReadMultiple_BrowsePath_Command_Click() OutputText = "" Dim BrowsePathParser As New UABrowsePathParser BrowsePathParser.DefaultNamespaceUriString = "http://test.org/UA/Data/" Dim readArguments1 As New UAReadArguments readArguments1.endpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. Set readArguments1.nodeDescriptor.browsePath = BrowsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/FloatValue") Dim ReadArguments2 As New UAReadArguments ReadArguments2.endpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. Set ReadArguments2.nodeDescriptor.browsePath = BrowsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/SByteValue") Dim ReadArguments3 As New UAReadArguments ReadArguments3.endpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. Set ReadArguments3.nodeDescriptor.browsePath = BrowsePathParser.Parse("[ObjectsFolder]/Data/Static/Array/UInt16Value") Dim ReadArguments4 As New UAReadArguments ReadArguments4.endpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. Set ReadArguments4.nodeDescriptor.browsePath = BrowsePathParser.Parse("[ObjectsFolder]/Data/Static/UserScalar/Int32Value") Dim arguments(3) As Variant Set arguments(0) = readArguments1 Set arguments(1) = ReadArguments2 Set arguments(2) = ReadArguments3 Set arguments(3) = ReadArguments4 ' Instantiate the client object Dim Client As New EasyUAClient ' Obtain values. By default, the Value attributes of the nodes will be read. Dim results() As Variant results = Client.ReadMultiple(arguments) ' Display results Dim i: For i = LBound(results) To UBound(results) Dim Result As UAAttributeDataResult: Set Result = results(i) If Result.Succeeded Then OutputText = OutputText & "results(" & i & ").AttributeData: " & Result.AttributeData & vbCrLf Else OutputText = OutputText & "results(" & i & ") *** Failure: " & Result.ErrorMessageBrief & vbCrLf End If Next ' Example output: 'results(0).AttributeData: 4.187603E+21 {System.Single} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good 'results(1).AttributeData: -98 {System.Int16} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good 'results(2).AttributeData: [58] {38240, 11129, 64397, 22845, 30525, ...} {System.Int32[]} @2019-11-09T14:00:07.543 @@2019-11-09T14:05:46.268; Good 'results(3).AttributeData: 1280120396 {System.Int32} @2019-11-09T14:00:07.590 @@2019-11-09T14:05:46.268; Good End Sub
Rem This example shows how to read the attributes of 4 OPC-UA nodes specified by browse paths at once, and display the Rem results. Rem Rem Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . Rem OPC client and subscriber examples in VBScript on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBScript . Rem Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own Rem a commercial license in order to use Online Forums, and we reply to every post. Option Explicit Dim BrowsePathParser: Set BrowsePathParser = CreateObject("OpcLabs.EasyOpc.UA.Navigation.Parsing.UABrowsePathParser") BrowsePathParser.DefaultNamespaceUriString = "http://test.org/UA/Data/" Dim ReadArguments1: Set ReadArguments1 = CreateObject("OpcLabs.EasyOpc.UA.OperationModel.UAReadArguments") ReadArguments1.EndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. ReadArguments1.NodeDescriptor.BrowsePath = BrowsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/FloatValue") Dim ReadArguments2: Set ReadArguments2 = CreateObject("OpcLabs.EasyOpc.UA.OperationModel.UAReadArguments") ReadArguments2.EndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. ReadArguments2.NodeDescriptor.BrowsePath = BrowsePathParser.Parse("[ObjectsFolder]/Data/Dynamic/Scalar/SByteValue") Dim ReadArguments3: Set ReadArguments3 = CreateObject("OpcLabs.EasyOpc.UA.OperationModel.UAReadArguments") ReadArguments3.EndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. ReadArguments3.NodeDescriptor.BrowsePath = BrowsePathParser.Parse("[ObjectsFolder]/Data/Static/Array/UInt16Value") Dim ReadArguments4: Set ReadArguments4 = CreateObject("OpcLabs.EasyOpc.UA.OperationModel.UAReadArguments") ReadArguments4.EndpointDescriptor.UrlString = "opc.tcp://opcua.demo-this.com:51210/UA/SampleServer" ' Note: Add error handling around the following statement if the browse path is not guaranteed to be syntactically valid. ReadArguments4.NodeDescriptor.BrowsePath = BrowsePathParser.Parse("[ObjectsFolder]/Data/Static/UserScalar/Int32Value") Dim arguments(3) Set arguments(0) = ReadArguments1 Set arguments(1) = ReadArguments2 Set arguments(2) = ReadArguments3 Set arguments(3) = ReadArguments4 ' Instantiate the client object Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.UA.EasyUAClient") ' Perform the operation Dim results: results = Client.ReadMultiple(arguments) ' Display results Dim i: For i = LBound(results) To UBound(results) Dim AttributeDataResult: Set AttributeDataResult = results(i) If AttributeDataResult.Succeeded Then WScript.Echo "results[" & i & "].AttributeData: " & AttributeDataResult.AttributeData Else WScript.Echo "results[" & i & "] *** Failure: " & AttributeDataResult.ErrorMessageBrief End If Next ' Example output: 'results[0].AttributeData: 4.187603E+21 {System.Single} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good 'results[1].AttributeData: -98 {System.Int16} @2019-11-09T14:05:46.268 @@2019-11-09T14:05:46.268; Good 'results[2].AttributeData: [58] {38240, 11129, 64397, 22845, 30525, ...} {System.Int32[]} @2019-11-09T14:00:07.543 @@2019-11-09T14:05:46.268; Good 'results[3].AttributeData: 1280120396 {System.Int32} @2019-11-09T14:00:07.590 @@2019-11-09T14:05:46.268; Good
# This example shows how to read the attributes of 4 OPC-UA nodes specified by browse paths at once, and display the # results. # # Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html . # OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python . # Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own # a commercial license in order to use Online Forums, and we reply to every post. # The QuickOPC package is needed. Install it using "pip install opclabs_quickopc". import opclabs_quickopc import time # Import .NET namespaces. from OpcLabs.EasyOpc.UA import * from OpcLabs.EasyOpc.UA.Navigation.Parsing import * from OpcLabs.EasyOpc.UA.OperationModel import * endpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:51210/UA/SampleServer') # or 'http://opcua.demo-this.com:51211/UA/SampleServer' (currently not supported) # or 'https://opcua.demo-this.com:51212/UA/SampleServer/' # Instantiate the client object. client = EasyUAClient() # Instantiate the browse path parser. browsePathParser = UABrowsePathParser() browsePathParser.DefaultNamespaceUriString = 'http://test.org/UA/Data/' # Prepare arguments. # Note: Add error handling around the following statement if the browse paths are not guaranteed to be # syntactically valid. readArgumentsArray = [ UAReadArguments(endpointDescriptor, UANodeDescriptor(browsePathParser.Parse('[ObjectsFolder]/Data/Dynamic/Scalar/FloatValue'))), UAReadArguments(endpointDescriptor, UANodeDescriptor(browsePathParser.Parse('[ObjectsFolder]/Data/Dynamic/Scalar/SByteValue'))), UAReadArguments(endpointDescriptor, UANodeDescriptor(browsePathParser.Parse('[ObjectsFolder]/Data/Static/Array/UInt16Value'))), UAReadArguments(endpointDescriptor, UANodeDescriptor(browsePathParser.Parse('[ObjectsFolder]/Data/Static/UserScalar/Int32Value'))), ] # Obtain attribute data. attributeDataResultArray = client.ReadMultiple(readArgumentsArray) # Display results. for i, attributeDataResult in enumerate(attributeDataResultArray): if attributeDataResult.Succeeded: print('results[', i, '].AttributeData: ', attributeDataResult.AttributeData, sep='') else: print('results[', i, '] *** Failure: ', attributeDataResult.ErrorMessageBrief, sep='') print() print('Finished.')
Copyright © 2004-2024 CODE Consulting and Development, s.r.o., Plzen. All rights reserved.
Documentation Home, Send Documentation Feedback. Technical Support